<?php
class IntroBannerForm extends Form
{
    function IntroBannerForm()
    {
        Form::Form('IntroBannerForm');

        //ngannv tùy biến dung  JW Image Rotator
        $this->link_js(FOLDER_JS . 'imagerotator/swfobject.js');

        $cmd = Url::get("cmd");
        $id  = Url::get("id", 0);

        if ($cmd == 'del_hb' && $id) {
            if (file_exists(DATA_PATH . "home_banner/$id.swf")) {
                @unlink(DATA_PATH . "home_banner/$id.swf");
            }

            if (file_exists(DATA_PATH . "home_banner/$id.gif")) {
                @unlink(DATA_PATH . "home_banner/$id.gif");
            }

            if (file_exists(DATA_PATH . "home_banner/$id.jpg")) {
                @unlink(DATA_PATH . "home_banner/$id.jpg");
            }

            if (file_exists(DATA_PATH . "home_banner/$id.jpeg")) {
                @unlink(DATA_PATH . "home_banner/$id.jpeg");
            }

            if (file_exists(DATA_PATH . "home_banner/$id.png")) {
                @unlink(DATA_PATH . "home_banner/$id.png");
            }

            Url::redirect();
        }
    }

    function on_submit()
    {
        if (User::is_admin()) {
            $replace_file = FALSE;
            $hb_update    = Url::get('hb_update', 0);


            if (isset($_FILES['banner']) && $_FILES['banner']['error'] == 0) {
                $b_ext = strtolower(AZLib::getExtension($_FILES['banner']['name']));

                if (in_array($b_ext, array('.swf', '.gif', '.jpg', '.jpeg', '.png'))) {
                    $replace_file = TRUE;
                } else {
                    $this->setFormError('banner', "Sai định dạng file! Chỉ chấp nhận định dạng .swf, .gif, .jpg, .jpeg, .png");
                }
            } elseif ($hb_update == 0) {
                $this->setFormError('banner', "Không up được hoặc bạn chưa chọn up banner!");
            }

            if (!$this->errNum) {
                if (($hb_update == 0 && $replace_file == TRUE) || $hb_update > 0) { //Up mới hoặc cập nhật thông số
                    $url = Url::get('url');
                    $sec = Url::get('sec', 0);

                    if ($sec <= 0) {
                        $sec = 15;
                    }

                    $up_pos   = 0;
                    $max_name = 0;
                    $banners  = array();

                    $dir = scandir(DATA_PATH . "home_banner/");

                    $configs = @CGlobal::$configs['home_banner']['conf_val'];

                    if ($configs) {
                        $configs = unserialize(stripslashes($configs));
                    } else {
                        $configs = array();
                    }

                    $config_update = array();

                    foreach ($dir as $fd) {
                        if (is_file(DATA_PATH . "home_banner/$fd")) {
                            $ext = strtolower(AZLib::getExtension($fd));

                            $arr = array();

                            if (in_array($ext, array('.swf', '.gif', '.jpg', '.jpeg', '.png'))) {
                                $name = (int)basename($fd, $ext);

                                if (isset($configs[$name])) {
                                    $config_update[$name] = array(
                                        'time'     => $configs[$name]['time'],
                                        'url'      => $configs[$name]['url'],
                                    );
                                } else {
                                    $config_update[$name] = array(
                                        'time'     => 15,
                                        'url'      => '',
                                    );
                                }

                                if ($max_name < $name) {
                                    $max_name = $name;
                                }

                                $banners[$name] = $name;
                            }
                        }
                    }

                    if ($hb_update > 0) {
                        if ($hb_update > $max_name) {
                            $up_pos = $max_name + 1;
                        } else {
                            $up_pos = $hb_update;
                        }
                    } else {
                        for ($i = 1; $i <= $max_name + 1; $i++) {
                            if (!isset($banners[$i])) {
                                $up_pos = $i;
                                break;
                            }
                        }
                    }

                    $config_update[$up_pos] = array(
                        'time'     => $sec,
                        'url'      => urlencode($url),
                    );

                    if ($replace_file) {
                        if (file_exists(DATA_PATH . "home_banner/$up_pos.swf")) {
                            @unlink(DATA_PATH . "home_banner/$up_pos.swf");
                        }

                        if (file_exists(DATA_PATH . "home_banner/$up_pos.gif")) {
                            @unlink(DATA_PATH . "home_banner/$up_pos.gif");
                        }

                        if (file_exists(DATA_PATH . "home_banner/$up_pos.jpg")) {
                            @unlink(DATA_PATH . "home_banner/$up_pos.jpg");
                        }

                        if (file_exists(DATA_PATH . "home_banner/$up_pos.jpeg")) {
                            @unlink(DATA_PATH . "home_banner/$up_pos.jpeg");
                        }

                        if (file_exists(DATA_PATH . "home_banner/$up_pos.png")) {
                            @unlink(DATA_PATH . "home_banner/$up_pos.png");
                        }

                        $banner_file = DATA_PATH . "home_banner/$up_pos$b_ext";

                        if (!move_uploaded_file($_FILES['banner']['tmp_name'], $banner_file)) {
                            $this->setFormError('banner', "Không Upload được Banner!");

                            return;
                        } else {
                            @chmod($banner_file, 0777);
                        }
                    }

                    if (isset(CGlobal::$configs['home_banner']))
                        DB::update('configs', array("conf_val"=> addslashes(serialize($config_update))), "conf_key='home_banner'", __FILE__ . " Dòng:" . __LINE__);
                    else
                        DB::insert('configs', array("conf_key"=> 'home_banner', "conf_val"=> addslashes(serialize($config_update))), __FILE__ . " Dòng:" . __LINE__);

                    AZLib::get_config(0, 1);

                    if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']) {
                        $referer = $_SERVER['HTTP_REFERER'];
                    } else {
                        $referer = $_SERVER['REQUEST_URI'];
                    }

                    Url::redirect_url($referer);
                }
            }
        }

        Url::redirect_url($_SERVER['REQUEST_URI']);
    }

    function draw()
    {
        global $display;

        $catid    = Url::get('catid', 0);
        $max_name = 0;

        $baners   = array();
        $h_banner = array();

        $configs = @CGlobal::$configs['home_banner']['conf_val'];

        if ($configs) {
            $configs = unserialize(stripslashes($configs));
        } else {
            $configs = array();
        }

        $dir = scandir(DATA_PATH . "home_banner/");

        $i = 1;
        foreach ($dir as $fd) {
            if (is_file(DATA_PATH . "home_banner/$fd")) {
                $ext = strtolower(AZLib::getExtension($fd));

                if (in_array($ext, array('.swf', '.gif', '.jpg', '.jpeg', '.png'))) {
                    $arr = array();

                    if ($ext == '.swf') {
                        $arr['type'] = 1;
                    } else {
                        $arr['type'] = 2;
                    }

                    $arr['stt']  = $i++;
                    $arr['name'] = (int)basename($fd, $ext);

                    if ($max_name < $arr['name']) {
                        $max_name = $arr['name'];
                    }

                    $arr['path'] = DATA_PATH . "home_banner/$fd";

                    $arr['del'] = "?cmd=del_hb&id={$arr['name']}";


                    if (isset($configs[$arr['name']])) {
                        $h_banner[$arr['name']] = $configs[$arr['name']]['time'] . '000';
                        $arr['time']            = $configs[$arr['name']]['time'];

                        if ($configs[$arr['name']]['url'] != '') {
                            $arr['url'] = urldecode($configs[$arr['name']]['url']);
                        } else {
                            $arr['url'] = '';
                        }
                    } else {
                        $h_banner[$arr['name']] = 15000;
                        $arr['time']            = 15;
                        $arr['url']             = '';
                    }

                    $baners[$arr['name']] = $arr;
                }
            }
        }

        $display->add("baners", $baners);
        $display->add("h_banner", json_encode($h_banner));
        $display->add("max", $i - 1);

        $arr = array(0=> "Up mới!");

        if ($max_name > 0) {
            for ($i = 1; $i <= $max_name; $i++) {
                $arr[$i] = "Thay banner $i";
            }
        }

        $display->add("hb_option", AZLib::getOption($arr, 0));

        if (User::is_admin()) {
            $display->add("is_admin", 1);
            $display->add("msg", $this->showFormErrorMessages(1));
            $display->add('begin_form', $this->beginForm(TRUE, 'post', FALSE, FALSE, 1));
            $display->add('end_form', $this->endForm(TRUE));
        }

        //ngannv settting   JW Image Rotator

        $display->add("jw_swf_file", STATIC_URL . FOLDER_JS . 'imagerotator/imagerotator.swf');
        $settingFile = DATA_PATH . 'banner_home.php';
        if (!file_exists(ROOT_PATH . $settingFile)) {
            $settingFile = DATA_PATH . 'banner_setting_default.xml';//không có file này nữa thì ^^
        }
        $display->add("jw_xml_file", $settingFile);

        //end   JW Image Rotator
        $display->output("IntroBanner");
    }
}

?>